﻿/**
 * 
 * @file OperAbstractMaterial.h
 * @brief 材料操作器抽象类声明
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2024-12-05
 * 
 */
#ifndef _OPER_MATERIAL_ABSTRACT_H___
#define _OPER_MATERIAL_ABSTRACT_H___
 
#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"
#include "OperatorsInterfaceAPI.h"

namespace EventOper
{
    /**
     * @brief 材料操作器抽象类
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2024-12-05
     */
    class OperatorsInterfaceAPI OperAbstractMaterial : public Core::FITKActionOperator
    {
    public:
        /**
         * @brief Construct a new Oper Abstract Material object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-12-05
         */
        explicit OperAbstractMaterial() = default;
        /**
         * @brief Destroy the Oper Abstract Material object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-12-05
         */
        virtual ~OperAbstractMaterial() = 0;

         /**
         * @brief 创建材料
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-12-05
         */ 
        virtual void createMaterial();
        /**
         * @brief 复制材料
         * @param[i]  matid          材料id
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-12-05
         */ 
        virtual void duplicateMaterial(const int matID);
        /**
         * @brief 编辑材料
         * @param[i]  matid          材料id
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-12-05
         */
        virtual void editMaterial(const int matID);
         /**
          * @brief 删除材料
          * @param[i]  matid          材料id
          * @author LiBaojun (libaojunqd@foxmail.com)
          * @date 2024-12-05
          */
        virtual void removeMaterial(const int matid);

        virtual void setAttribute(const QString &name,const QString& currentText, const int attrIndex, const QList<int> & matIDs);
    };
}


#endif
